home *** CD-ROM | disk | FTP | other *** search
Text File | 1999-02-08 | 5.3 KB | 194 lines | [TEXT/CWIE] |
- ///--------------------------------------------------------------------------------------
- // SpriteFrame.h
- //
- // Portions are copyright: © 1991-94 Tony Myles, All rights reserved worldwide.
- ///--------------------------------------------------------------------------------------
-
-
- #ifndef __SPRITEFRAME__
- #define __SPRITEFRAME__
-
-
- #ifndef __SWCOMMON__
- #include "SWCommonHeaders.h"
- #endif
-
- #ifndef __QDOFFSCREEN__
- #include <QDOffscreen.h>
- #endif
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=mac68k
- #endif
-
- ///--------------------------------------------------------------------------------------
- // frame type definitions
- ///--------------------------------------------------------------------------------------
-
- typedef struct FrameRec FrameRec;
- typedef FrameRec *FramePtr, **FrameHdl;
-
-
- ///--------------------------------------------------------------------------------------
- // frame data structure
- ///--------------------------------------------------------------------------------------
-
- struct FrameRec
- {
- GWorldPtr framePort; // GWorld for the frame image
- PixMapHandle framePixHndl; // handle to pix map (saved for unlocking/locking)
- PixMapPtr framePix; // pointer color pix map (valid only while locked)
-
- char* frameBaseAddr; // base address of pixel data (valid only while locked)
- unsigned long frameRowBytes; // number of bytes in a row of the frame
- short leftAlignFactor; // used to align rect.left to the nearest long word
- short rightAlignFactor; // used to align rect.right to the nearest long word
- Boolean isFrameLocked; // has the frame been locked?
- Boolean isWindowFrame; // is this a window Frame?
- short pad2; // (note: boolean is the same as an unsigned char)
-
- Rect frameRect; // source image rectangle
- short hotSpotH; // horizontal hot point for this frame
- short hotSpotV; // vertical hot point for this frame
- Point offsetPoint; // offset for this Frame's maskRgn
- RgnHandle maskRgn; // image masking region
- GWorldPtr maskPort; // GWorld for the mask image
- PixMapHandle maskPixHndl; // handle to pix map (saved for unlocking/locking)
- PixMapPtr maskPix; // pointer to color pix map (valid only while locked)
- char* maskBaseAddr; // base address of mask pixel data (valid only while locked)
- Boolean tileMaskIsSolid;// used by SWDrawTilesAboveSprite
- Boolean sharesGWorld; // shares GWorld with other frames
-
- unsigned short useCount; // number of sprites using this frame
- short worldRectOffset; // non-whole-byte offset for 1-bit blitter
- unsigned short numScanLines; // number of scan lines
- unsigned long* scanLinePtrArray; // array of pointers to each scanline
-
- PixelCodeHdl pixCodeH; // handle to compiled sprite data
- BlitFuncPtr frameBlitterP; // procPtr to compiled sprite data
-
- long userData; // reserved for user
- };
-
-
- ///--------------------------------------------------------------------------------------
- // frame flags constants
- ///--------------------------------------------------------------------------------------
-
- typedef enum
- {
- kNoMask = 0,
- kPixelMask = 1,
- kRegionMask = 2,
- kFatMask = (kPixelMask + kRegionMask),
- kSolidMask = 4
- } MaskType;
-
-
- ///--------------------------------------------------------------------------------------
- // frame function prototypes
- ///--------------------------------------------------------------------------------------
-
- SW_FUNC OSErr SWCreateFrame(
- GDHandle theGDH,
- FramePtr* newFrameP,
- Rect* frameRect,
- short depth);
-
- SW_FUNC OSErr SWCreateWindowFrame(
- FramePtr* newFrameP,
- Rect* frameRect,
- short maxHeight);
-
- SW_FUNC OSErr SWCreateFrameFromCicnResource(
- SpriteWorldPtr destSpriteWorld,
- FramePtr* newFrameP,
- short iconResID,
- MaskType maskType);
-
- SW_FUNC OSErr SWCreateFrameFromPictResource(
- SpriteWorldPtr destSpriteWorld,
- FramePtr* newFrameP,
- short pictResID,
- short maskResID,
- MaskType maskType);
-
- SW_FUNC OSErr SWCreateFrameFromGWorldAndRect(
- FramePtr* newFrameP,
- GWorldPtr pictGWorld,
- GWorldPtr maskGWorld,
- Rect* frameRect,
- MaskType maskType);
-
- SW_FUNC OSErr SWCreateFrameFromGWorldAndRectStart(
- GWorldPtr *tempMaskGWorld,
- short maxWidth,
- short maxHeight,
- MaskType maskType);
-
- SW_FUNC OSErr SWCreateFrameFromGWorldAndRectPartial(
- FramePtr* newFrameP,
- GWorldPtr pictGWorld,
- GWorldPtr maskGWorld,
- GWorldPtr tempMaskGWorld,
- Rect* frameRect,
- MaskType maskType);
-
- SW_FUNC void SWCreateFrameFromGWorldAndRectFinish(
- GWorldPtr tempMaskGWorld);
-
- SW_FUNC Boolean SWDisposeFrame(
- FramePtr *oldFramePP);
-
- SW_FUNC void SWDisposeWindowFrame(
- FramePtr *oldFramePP);
-
- SW_FUNC void SWInitializeFrame(
- FramePtr tempFrameP,
- short depth);
-
- SW_FUNC void SWSetFrameMaskRgn(
- FramePtr srcFrameP,
- RgnHandle maskRgn);
-
- SW_FUNC void SWSetFrameHotSpot(
- FramePtr srcFrameP,
- short hotSpotH,
- short hotSpotV);
-
- SW_FUNC OSErr SWCopyFrame(
- SpriteWorldPtr destSpriteWorldP,
- FramePtr oldFrameP,
- FramePtr *newFrameP,
- Boolean copyMasks);
-
- SW_FUNC OSErr SWUpdateFrameMasks(
- SpriteWorldPtr destSpriteWorldP,
- FramePtr srcFrameP);
-
- SW_FUNC void SWLockFrame(
- FramePtr srcFrameP);
-
- SW_FUNC void SWUnlockFrame(
- FramePtr srcFrameP);
-
- SW_FUNC void SWLockWindowFrame(
- FramePtr windowFrameP);
-
- SW_FUNC void SWUnlockWindowFrame(
- FramePtr windowFrameP);
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=reset
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __SPRITEFRAME__ */